//C17:17.6:queue.h
#pragma c9x on
#ifndef _QUEUE_H_
#define _QUEUE_H_
#include <stdbool.h>

typedef int Item;
/*or typedef struct item(int gumption; int charisma; } Item;*/
#define MAXQUEUE  10
typedef struct node
{
    Item item;
    struct node *next;        
} Node;

typedef struct queue
{
    Node *front;
    Node *rear;
    int items;
} Queue;

/*Initial Queue*/
void InitializeQueue(Queue *pq);
/*Queue is full*/
bool QueueIsFull(const Queue *pq);
/*Queue is empty*/
bool QueueIsEmpty(const Queue *pq);
/*Count of items of Queue*/
int QueueItemCount(const Queue* pq);
/*Enqueue add item to queue*/
bool EnQueue(Item item, Queue *pq);
/*DeQueue: remove item of Queue*/
bool DeQueue(Item *pitem, Queue *pq);
/*EmptyTheQueue: Clear items of Queue*/
void EmptyTheQueue(Queue *pq);
#endif